/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/14 16:01
 * @Copyright
 */
package Reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

/*
反编译一个类的Constructor构造方法
 */
public class ReflectTest11 {
    public static void main(String[] args) throws Exception{
        StringBuffer s=new StringBuffer();
        Class c=Class.forName("java.lang.String");
        s.append(Modifier.toString(c.getModifiers()));
        s.append("class");
        s.append(c.getSimpleName());
        s.append("{\n");

        //拼接构造方法
        Constructor[] constructors=c.getDeclaredConstructors();
        for (Constructor constructor:constructors){
            s.append("\t");
            s.append(Modifier.toString(constructor.getModifiers()));
            s.append(" ");
            s.append(c.getSimpleName());
            s.append("(");

            //拼接参数
            Class[] parameterTypes=constructor.getParameterTypes();
            for (Class parameterType:parameterTypes){
                s.append(parameterType.getSimpleName());
                s.append(",");
            }
            //删除最后下标位置上的字符
            if (parameterTypes.length>0){
                s.deleteCharAt(s.length()-1);
            }
            s.append("){}\n");
        }
        s.append("}");
        System.out.println(s);
    }
}
